﻿using System;
using System.Collections.Specialized;
using AModel.Generador.Dominio.Base;
using System.Collections;

namespace AModel.Generador.Dominio.Utilidaes
{
    public class ListaObjetosUML<Objeto> :  ICloneable, IEnumerable
    {
        private ListDictionary Lista;

        public ListaObjetosUML()
        {
            Lista = new ListDictionary();
        }

        public void Add(Objeto objeto)
        {
            Object obj = (Object)objeto;
            Lista.Add(((ObjetoUML)obj).Nombre, objeto);
        }

        public Objeto this[String index]
        {
            get
            {
                Object obj = Lista[index];
                return (Objeto)obj;
            }
            set
            {
                Lista[index] = value;
            }
        }


        public object Clone()
        {
            ListaObjetosUML<Objeto> nuevaLista = new ListaObjetosUML<Objeto>();
            foreach (ObjetoUML ob in Lista)
            {
                nuevaLista.Add((Objeto)ob.Clone());
            }
            return nuevaLista;
        }

        public int Count {
            get {
                return Lista.Count;
            }
        }

        public IEnumerator GetEnumerator()
        {
            return Lista.GetEnumerator();
        }


        public bool Contains(string Nombre)
        {
            return Lista.Contains(Nombre);
        }

        public void Remove(string NombreClase1)
        {
            Lista.Remove(NombreClase1);
        }
    }
}
